Servers are essential components of networking technology, receiving visits from users numbered in a multitude ranging from tens to thousands or even tens of thousands. As a result, servers tend to face performance demands in terms of high throughput of a large amount of data, extremely high level of stability, long execution hours, etc. For a large amount of computation, servers servicing at a department level or enterprise level generally support central processor unit (CPU) parallel processing. Parallel processing refers to a server having multiple CPUs executing at the same time, which greatly enhances the data processing power of the server. Presently, high performance servers are generally equipped with multiple CPUs.
The technology of CPU parallel processing is applied to scenarios where, for example, a server is installed with multiple programs (tasks), each program capable of being executed in parallel with each other. With such a server executing multiple programs, each program corresponds to a process group, which includes one or more processes. The multiple process groups share the hardware resources provided by the same server. During the process of multiple programs running in parallel, to prevent the process groups from interfering with each other's execution or generating variances in performance, it is necessary to isolate the CPU resources utilized by the process groups corresponding to the multiple programs. In an ideal situation, allocating independent resources for each process group can guarantee that the CPU resources can be successfully isolated for the process groups. But, independent allocation of CPU resources leads to parts of the allocated CPU resources being under-utilized and consequently causing the waste of CPU resources.
To increase the usage rate of CPU resources, a CPU is assigned to execute two or more process groups such that it is shared among multiple process groups, i.e., CPU resources are over-provisioned. Over-provisioning is one of the mechanisms that help attaining a balance between achieving CPU resource isolation and CPU resource usage efficiency.
When utilizing the over-provisioning mechanism to allocate CPU resources to process groups, the prior art technology pins the process groups to a particular CPU or CPU clusters for execution. With the different demands for CPU resources by different programs and the different demands for CPU resources by a process group at different points of execution, the pinning method can easily lead to some CPUs being overloaded with too many busy programs, while other CPUs are under-loaded with less programs, i.e., there is an imbalance among the usage of each CPU. In an environment of multiple process groups where the CPU resources are shared by multiple process groups, when one or more CPUs have a heavy workload, the functionality of the programs executing on those CPUs is likely to experience degraded variance in terms of performance.
Therefore, there exists a need for solving the problems of imbalanced CPU usage in an environment of parallel processing in servers.